﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<vector>


using namespace std;

//137.只出现⼀次的数字II(位运算)
//class Solution {
//public:
//    int singleNumber(vector<int>& nums) {
//        int ret = 0;
//        for (int i = 0; i < 32; i++)
//        {
//            int total = 0;
//            for (auto& num : nums)
//            {
//                //提取原来数中32位中第i位的值
//                total = total + ((num >> i) & 1);
//            }
//            if (total % 3)
//            {
//                //不改变原来的数，向与原来的数ret中改变其32位中的第i位
//                ret = ret | (1 << i);
//            }
//        }
//        return ret;
//    }
//};

//17.19 消失的两个数字，位运算（通过异或来进行运算）
//class Solution {
//public:
//    vector<int> missingTwo(vector<int>& nums) {
//        int temp = 0;
//        //找出不同的两个数
//        for (auto& num : nums)
//            temp = temp ^ num;
//        for (int i = 1; i <= nums.size() + 2; i++)
//            temp ^= i;
//
//
//        int diff = 0;
//        while (1)
//        {
//            //找出两个值最右边的比特位不同从而区分两个组，
//            //一组位0，另一组位1；
//            if (((temp >> diff) & 1) == 1) break;
//            else diff++;
//        }
//
//        int a = 0, b = 0
//        //把分开的两组按照各自的0，1分别异或；
//        for (int x : nums)
//        { 
//            if (((x >> diff) & 1) == 1)
//                b ^= x;
//            else
//                a ^= x;
//        }
//
//        //把相同的值异或掉剩余的数则位要求的数
//        for (int i = 1; i <= nums.size() + 2; i++)
//        {
//            if (((i >> diff) & 1) == 1)
//                b ^= i;
//            else
//                a ^= i;
//        }
//
//        return { a,b };
//    }
//};

//int n, m;
//long long k, a[50001];
//int check(long long x) {
//    int sum = 0, p = 0;
//    for (int i = 1; i <= n; i++) {
//        int k = a[i] - a[p];
//        if (k < x) {
//            sum++;
//        }
//        else {
//            p = i;
//        }
//    }
//    while (sum < m) {
//        sum++;
//        p--;
//    }
//    return k - a[p] >= x && sum <= m;
//}
//int main()
//{
//    scanf("%d%d%d", &k, &n, &m);
//    m = n - m;
//    for (int i = 1; i <= n; i++) {
//        scanf("%d", &a[i]);
//    }
//    long long left = 0, rig = k;
//    while (left < rig) {
//        long long mid = (left + rig + 1) / 2;
//        if (check(mid)) {
//            left = mid;
//        }
//        else {
//            rig = mid - 1;
//        }
//    }
//    printf("%lld", rig);
//    return 0;
//}

int main()
{
    return 0;
}